home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / amigaos4_only / ifxlite / imagefx3 / rexx / autofx / fieldrender.ifx < prev    next >
Text File  |  2004-08-03  |  2KB  |  101 lines

  1. /*
  2.  * $VER: FieldRender.ifx 2.5 (11.04.96)
  3.  * Copyright © 1992-1996 Nova Design, Inc.
  4.  * Written by Thomas Krehbiel
  5.  *
  6.  * Convert a series of frames into "field rendered" frames.  This can be used
  7.  * in a sequence with other scripts, but should be done as the last step before
  8.  * rendering and/or saving.  For example:
  9.  *
  10.  *       Load.ifx
  11.  *       <a bunch of effects>
  12.  *       FieldRender.ifx
  13.  *       Render_Amiga.ifx
  14.  *       SaveRenderedAs_ANIM.ifx
  15.  *
  16.  * This script is generally only useful when the output frames are destined
  17.  * for video tape.  (Ie. the "field rendering" technique is expressly for the
  18.  * purpose of smoothing out video playback at 30fps.)
  19.  *
  20.  * NOTE:  Due to current limitations of AutoFX, a field at the beginning of the
  21.  * animation and a field at the end of the animation are lost.
  22.  *
  23.  * Inputs:
  24.  *    Word(Arg(1),1) = Frame number (1 - N)
  25.  *    Word(Arg(1),2) = Main filename ("-" if not specified)
  26.  *    Word(Arg(1),3) = Swap filename ("-" if not specified)
  27.  *    Word(Arg(1),4) = Sequence number
  28.  *    Word(Arg(1),5) = Total number of frames (N)
  29.  *    Word(Arg(1),6) = Alpha filename ("-" if not specified) [2.1]
  30.  *
  31.  * Returns:
  32.  *    0 if successful, non-zero on failure
  33.  *
  34.  */
  35.  
  36. /*
  37.  * What we want to do is combine frames like this:
  38.  *
  39.  * #  Even        Odd
  40.  *
  41.  * 2  A field 1 + B field 0
  42.  * 3  B field 1 + C field 0
  43.  * 4  C field 1 + D field 0
  44.  * 1  D field 1 + A field 0
  45.  *
  46.  */
  47.  
  48. /*
  49.  *
  50.  */
  51.  
  52. OPTIONS RESULTS
  53.  
  54. filename = WORD(ARG(1),2)
  55. framenum = WORD(ARG(1),1)
  56. framemax = WORD(ARG(1),5)
  57.  
  58. fieldreverse = 0              /* change to 1 to reverse the fields */
  59.  
  60. Hook DeInterlace              /* break current frame into two fields; field 1
  61.                                     is now in swap buffer, field 0 in main */
  62.  
  63. IF fieldreverse THEN Swap
  64.  
  65. IF framenum = 1 THEN DO
  66.  
  67.    RenameBuffer '"FirstEvenField"'
  68.    Buffer2Back
  69.    Swap
  70.    RenameBuffer '"PreviousOddField"'
  71.    Buffer2Back
  72.  
  73.    END
  74.  
  75. ELSE DO
  76.  
  77.    RenameBuffer '"CurrentEvenField"'
  78.    Buffer2Back
  79.    Swap
  80.    RenameBuffer '"CurrentOddField"'
  81.    Buffer2Back
  82.  
  83.    SelectBuffer '"PreviousOddField"'
  84.    Swap
  85.    SelectBuffer '"CurrentEvenField"'
  86.  
  87.    Hook Interlace             /* this replaces CurrentEvenField */
  88.    RenameBuffer '"CurrentFrame"'
  89.  
  90.    SelectBuffer '"PreviousOddField"'
  91.    KillBuffer Force  /* delete old PreviousOddField */
  92.  
  93.    SelectBuffer '"CurrentOddField"'
  94.    RenameBuffer '"PreviousOddField"'
  95.  
  96.    SelectBuffer '"CurrentFrame"'
  97.  
  98.    END
  99.  
  100. EXIT 0
  101.